package main

import (
	"fmt"
)

func main() {
	// var c1 chan int // 不能用 空的 channel
	// fmt.Printf("%v,len=%d,cap=%d\n", c1, len(c1), cap(c1))
	// c1 <- 100 // send 阻塞
	// <-c1      // receive 阻塞
	// make

	c2 := make(chan int, 8) // 创建一个可以存放 8 个 int 的 channel
	c3 := make(chan int, 0) // 一个元素都放不下，底层数据结构，unbuffered 非缓冲通道、同步通道
	fmt.Printf("%v,len=%d,cap=%d\n", c2, len(c2), cap(c2))
	fmt.Printf("%v,len=%d,cap=%d\n", c3, len(c3), cap(c3))

	// 同步通道
	// go func() {
	// 	time.Sleep(3 * time.Second)
	// 	c3 <- 1000
	// }()
	// x := <-c3
	// fmt.Println("x=", x)

	c2 <- 100
	c2 <- 200
	c2 <- 300
	x := <-c2
	fmt.Println("x=", x)
	fmt.Println("x=", <-c2)

	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
}
